iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
SideProject30

UVA題型研究系列 第 3

DAY3:Carry after addition

  • 分享至 

  • xImage
  •  

v03 UVA10035 Primary Arithmetic
內容
在小學時我們都做過加法的運算,就是把2個整數靠右對齊然後,由右至左一位一位相加。如果相加的結果大於等於10就有進位(carry)的情況出現。你的任務就是要判斷2個整數相加時產生了幾次進位的情況。這將幫助小學老師分析加法題目的難度。
輸入說明
每一列測試資料有2個正整數,長度均小於10位。最後一列有2個0代表輸入結束。
輸出說明
每列測試資料輸出該2數相加時產生多少次進位,請參考Sample Output。注意進位超過1次時operation有加s
範例輸入
123 456
555 555
123 594
0 0
範例輸出
No carry operation.
3 carry operations.
1 carry operation.
題目大意:你的任務就是要判斷2個整數相加時產生了幾次進位的情況。這將幫助小學老師分析加法題目的難度。
解題:兩數相加後,有幾次進位


#進入無限循環,直到用戶輸入m和n都為0才跳出循環
while True:
#從用戶輸入讀取兩個整數,以空格分隔,並將它們分別賦值給m和n
m, n = map(int, input().split())

#如果m和n都為0,則跳出循環
if m == 0 and n == 0:
    break

#初始化變數sum為0,用於計算進位操作的次數
sum = 0

#初始化變數x為0,用於記錄進位
x = 0

#進入循環,直到m和n都變為0
while m > 0 or n > 0:
    # 取出m和n的個位數,並將它們相加,再加上上一次的進位x
    if m % 10 + n % 10 + x >= 10:
        # 如果相加結果大於等於10,表示有進位
        #增加進位操作次數sum
        sum += 1
        #設置進位x為1
        x = 1
    else:
        # 如果相加結果小於10,則無進位
        #設置進位x為0
        x = 0

    #將m和n各自除以10,以去掉已經處理的個位數
    m //= 10
    n //= 10

#根據進位操作次數sum的不同情況輸出結果
if sum == 0:
    print("No carry operation.")
elif sum == 1:
    print("1 carry operation.")
else:
    print("{} carry operations.".format(sum))

上一篇
DAY2:Difference and absolute value
下一篇
DAY4:Function operations
系列文
UVA題型研究30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言